-
Notifications
You must be signed in to change notification settings - Fork 9
chore: getProof benchmark utility added #550
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: unstable
Are you sure you want to change the base?
Conversation
…163) @dhyaniarun1993 @itschaindev @sadiq1971 @meyer9 think these are the only crates we will need to touch. can update as we go. ideally the new logic will only live inside of _crates/optimism_, but we may need to generalise some components in the other crates I listed and make them customisable up at SDK (node builder _crates/node_) level to achieve this.
Fixes label name on bug issues
Closes #179 --------- Co-authored-by: Julian Meyer <[email protected]>
Fixes #177 I added a few methods that should allow atomically pruning and reorging blocks. Each function should represent a single transaction. We can store trie nodes, reorg, prune in a single transaction now. I kept the bulk insert methods available for storing the current state. --------- Co-authored-by: Arun Dhyani <[email protected]>
Ref #176 This PR adds an in-memory storage backend and tests that work with any storage backend. We can easily add more test cases to the file to test against a future SQLite backend. --------- Co-authored-by: Arun Dhyani <[email protected]> Co-authored-by: Emilia Hane <[email protected]>
Based on #183 This PR adds a backfill job that accepts a DB transaction and copies the current state to the database. The transaction ensures we see a consistent view of the database at the current block, even if the node is syncing. This requires `--db.read-transaction-timeout 0`. This currently doesn't handle interrupting the job because the state may update while syncing and may read a different version of the database upon restart. --------- Co-authored-by: Arun Dhyani <[email protected]> Co-authored-by: Emilia Hane <[email protected]>
No token, so this check always fails annoyingly. Disabling the upload step if missing token.
Closes #209
Description: - This PR adds scaffold MDBX proofs storage with impl to unblock parallel work. - Unblock multiple developers and avoid merge conflicts while the MDBX backend is being built. - Provide a compilable stub that wires types and env init, without committing to final storage logic.
…e` (#204) - Adds new crates `reth-optimism-exex` and `reth_optimism_trie` - Moves `reth_exex::external_proofs` -> `reth_optimism_exex` - Moves `reth_exex::external_proofs::storage` -> `reth_optimism_trie`
Seems like when `reth-optimism-trie` depends on `reth-db-api` indirectly, the doctest crate couldn’t resolve `reth_db_api::…` and failing. Closes #233 Co-authored-by: Emilia Hane <[email protected]>
This PR separates storage and account cursors which makes sense because these two cursors may have very different seek/next implementations. In the case of in-memory, a single cursor impl can still handle both, but for MDBX, it makes sense to implement separate cursors. Closes #236 --------- Co-authored-by: Arun Dhyani <[email protected]>
Based on #203 , #204 This PR implements `StateProvider` given a `OpProofsStorage` instance. It reads most data from the external database, but falls back on the latest provider for block hashes and code by hash similar to the existing historical provider in Reth. This is an important part to implementing live syncing since we're running the sync process on the DB being created. In the Reth implementation, `proof.rs` is contained in `trie/db`, so I think it makes sense to go in our DB crate. The `provider.rs` is in the `reth-provider` crate, but I don't think a separate provider crate helps us here, so I think we should also include that in the trie crate as well. --------- Co-authored-by: Emilia Hane <[email protected]>
Based on #197 This PR implements the live state collector on top of the `OpProofsStateProvider` created in the previous PR. This sync process tries to re-execute all blocks from the current block of the external database to tip. --------- Co-authored-by: Emilia Hane <[email protected]>
Closes #164 --------- Co-authored-by: Arun Dhyani <[email protected]>
Fixes #225 (does not track errors as these are fatal currently)
Fixes #237 Adds more concrete error variants for `OpProofsStorageError` Co-authored-by: Arun Dhyani <[email protected]>
Fixes #247 Removes the `block_number` parameter from: - store_account_branches - store_storage_branches - store_hashed_accounts - store_hashed_storages Co-authored-by: Arun Dhyani <[email protected]>
…253) Fixes #215 --------- Co-authored-by: Arun Dhyani <[email protected]>
Ref #241 - Fixes comment from deps fix in #229 (fix correct but comment misleading) - `serde-bincode-compat` is a feature which must be enabled when the `bincode` dependency is used. Asides for dev-deps, this only happens in `reth-stages`. `reth-exex` runs in `reth-stages`. In this wokrstream we use the `TrieUpdate` in exex. `serde-bincode-compat` is already implemented for `TrieUpdates` in `reth-trie-common`, this PR simply makes that feature accessible via `reth-trie` and in turn `reth-optimism-trie`, in order to enable it in `reth-optimism-exex`.
Signed-off-by: Ignacio Hagopian <[email protected]> Co-authored-by: Galoretka <[email protected]> Co-authored-by: YK <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Arsenii Kulikov <[email protected]> Co-authored-by: sashass1315 <[email protected]> Co-authored-by: radik878 <[email protected]> Co-authored-by: drhgencer <[email protected]> Co-authored-by: James Prestwich <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: yongkangc <[email protected]> Co-authored-by: Alexey Shekhirin <[email protected]> Co-authored-by: Claude <[email protected]> Co-authored-by: GarmashAlex <[email protected]> Co-authored-by: Brian Picciano <[email protected]> Co-authored-by: Roman Hodulák <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: Mablr <[email protected]> Co-authored-by: Skylar Ray <[email protected]> Co-authored-by: kevaundray <[email protected]> Co-authored-by: Wolfgang Welz <[email protected]> Co-authored-by: Karl Yu <[email protected]> Co-authored-by: MozirDmitriy <[email protected]> Co-authored-by: AJStonewee <[email protected]> Co-authored-by: Avory <[email protected]> Co-authored-by: stevencartavia <[email protected]> Co-authored-by: Léa Narzis <[email protected]> Co-authored-by: futreall <[email protected]> Co-authored-by: maradini77 <[email protected]> Co-authored-by: crazykissshout <[email protected]> Co-authored-by: Dharm Singh <[email protected]> Co-authored-by: leopardracer <[email protected]> Co-authored-by: Ignacio Hagopian <[email protected]> Co-authored-by: Dmitry <[email protected]> Co-authored-by: Micke <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-merge-queue <[email protected]>
Closes #212 --------- Co-authored-by: Emilia Hane <[email protected]>
Ref #205 Removes redundant dep `reth-db-api` from `reth-optimism-trie`, since used types are re-exported via `reth-db` --------- Co-authored-by: Arun Dhyani <[email protected]>
Resolves #239 --------- Co-authored-by: Einar Rasmussen <[email protected]>
Cherry picks commit from #540 Co-authored-by: Himess <[email protected]>
…ck_updates (#541) Closes #525 Co-authored-by: Emilia Hane <[email protected]>
Closes #519 --------- Co-authored-by: Emilia Hane <[email protected]> Co-authored-by: Emilia Hane <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds a Go-based benchmark utility to measure the performance of the eth_getProof RPC method by testing historical proof requests against the WETH contract on Optimism. The utility is designed to support performance analysis for issue #446.
Key changes:
- Implements a concurrent benchmark tool that measures
eth_getProoflatency across configurable block ranges - Targets WETH contract with pre-defined holder addresses and calculates storage slots for balance mappings
- Reports aggregated latency statistics (avg/min/max) and error counts per block interval
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
emhane
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we pls move this to a new directory op-reth-bench in
https://github.com/op-rs/op-reth/tree/unstable/bin
itschaindev
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Utility for #446